package com.myxml;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.util.Iterator;
import java.util.List;

public class Dom4jParser {
    public static void main(String[] args) {
        try {
            // 1. 创建解析器    	从 XML 源读取文档
            SAXReader reader = new SAXReader();

            // 2. 加载XML文件   	表示整个 XML 文档
            Document document = reader.read(new File("book.xml"));

            // 3. 获取根元素    	表示 XML 元素节点
            Element root = document.getRootElement();
            System.out.println("根元素: " + root.getName());

            // 4. 遍历所有book元素
            for (Iterator<Element> it = root.elementIterator("book"); it.hasNext(); ) {
                Element book = it.next();

                // 获取属性   表示元素属性
                String id = book.attributeValue("id");
                String category = book.attributeValue("category");
                System.out.println("\n图书ID: " + id + ", 类别: " + category);

                // 遍历子元素
                for (Iterator<Element> childIt = book.elementIterator(); childIt.hasNext(); ) {
//                    表示文本节点
                    Element child = childIt.next();
                    String name = child.getName();
                    String text = child.getText();
                    String lang = child.attributeValue("lang");

                    System.out.printf("%-8s: %s", name, text);
                    if (lang != null) {
                        System.out.print(" [语言: " + lang + "]");
                    }
                    System.out.println();
                }
            }

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
}